// 小程序页面如果想使用store对象中的数据或者方法
// 1.从mobx-miniprogram-bindings中导入BehaviorWithStore方法
import { BehaviorWithStore } from "mobx-miniprogram-bindings";
// 2.导入需要使用的store
import { numStore } from "../../stores/numstore";
import { cloneStore } from "../../stores/clonestore";
// 3.BehaviorWithStore方法返回一个behavior并进行暴露，在页面js文件中导入使用
export const cartBehavior = BehaviorWithStore({
  // 3.使用storeBindings方法进行配置
  // 如果一个组件/页面需要使用多个store，则需要将storeBindings改为一个数组
  // 在不同的store中存在相同的属性和方法就会出现错误
  storeBindings: [
    {
      // 解决方法1：将fields和actions改为对象格式，对属性和方法进行重命名
      store: numStore,
      // fields: ["numA", "numB", "sum"],
      fields: {
        A: "numA",
        B: "numB",
        total: "sum",
      },
      // actions: ["update"],
      actions: {
        changeNum: "update",
      },
    },
    {
      // 解决方法2：添加命名空间
      // 添加命名空间只能解决属性名相同，不能解决方法名相同，方法依旧需要使用对象格式
      // 注意：在为属性添加命名空间后，访问属性时需要在属性名前加上命名空间名
      namespace: "cloneStore",
      store: cloneStore,
      fields: ["numA", "numB", "sum"],
      // actions: ["update"],
      actions: {
        changeNum: "update",
      },
    },
  ],
});
